package cn.iocoder.yudao.module.infra.convert.label;

import java.util.*;

import cn.iocoder.yudao.framework.common.pojo.PageResult;

import cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils;
import cn.iocoder.yudao.module.infra.controller.admin.label.vo.LabelBaseVO;
import cn.iocoder.yudao.module.infra.controller.admin.label.vo.LabelCreateReqVO;
import cn.iocoder.yudao.module.infra.controller.admin.label.vo.LabelRespVO;
import cn.iocoder.yudao.module.infra.controller.admin.label.vo.LabelUpdateReqVO;
import cn.iocoder.yudao.module.infra.dal.dataobject.label.LabelDO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;

/**
 * 分类管理 Convert
 *
 * @author 芋道源码
 */
@Mapper(imports = { LocalDateTimeUtils.class })
public interface LabelConvert {

    LabelConvert INSTANCE = Mappers.getMapper(LabelConvert.class);

    LabelDO convert(LabelCreateReqVO bean);

    LabelDO convert(LabelUpdateReqVO bean);


    @Mappings(value = {
            @Mapping(target = "createTime", expression = "java(bean.getCreateTime() == null ? null : LocalDateTimeUtils.buildTime(bean.getCreateTime()))")
    })
    LabelRespVO convert(LabelDO bean);

    List<LabelRespVO> convertIdsList(List<LabelDO> list);

    List<LabelBaseVO> convertList(List<LabelDO> list);

    PageResult<LabelRespVO> convertPage(PageResult<LabelDO> page);


}
